﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <time.h>
#define MAX 10

//main108：开辟堆内存空间实现冒泡排序
int main108()
{
	//1.生成一个随机数种子；
	srand((unsigned int)time(NULL));
	//2.开辟的堆内存空间40个字节，使用int*指针类型p接收，故sizeof(p)一直都是4个字节；
	int* p = (int*)malloc(sizeof(int) * MAX);
	for (int i = 0; i < MAX; i++)
	{
		//4.存储50以内的随机数，即0-49；
		p[i] = rand() % 50;
		//*(p + i) = rand() % 50;

		//5.不是使用下面的方式赋值，会导致遍历输出时，指针越界；
		//*p++ = rand() % 50;
	}

	for (int i = 0; i < MAX; i++)
	{
		printf("3.输出堆内存中存储的随机数：%d\n", p[i]);//13 20 5 9 32 12 15 43 12 40
	}

	for (int i = 0; i < MAX - 1; i++)
	{
		for (int j = 0; j < MAX - i - 1; j++)
		{
			if (p[j] > p[j + 1])
			{
				int temp = p[j];
				p[j] = p[j + 1];
				p[j + 1] = temp;
			}
		}
	}

	for (int i = 0; i < MAX; i++)
	{
		printf("6.使用冒泡排序后，输出堆内存中的随机数：%d\n", p[i]);//5 9 12 12 13 15 20 32 40 43
	}

	free(p);

	system("pause");
	return EXIT_SUCCESS;
}